#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QThread>
#include <QDebug>
#include <rclcpp/rclcpp.hpp>
#include <std_msgs/msg/int32.hpp>
#include <cmath>


class DriverThread;



namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_speedSlider_valueChanged(int value);

private:
    Ui::MainWindow *ui;
    DriverThread *driverThread;
};



// 速度控制线程
class DriverThread : public QThread
{
    Q_OBJECT

public:
    explicit DriverThread(QWidget *parent = nullptr)
    {
        Q_UNUSED(parent);
    };
    ~DriverThread()
    {

    };

    // run方法,在setDriverSpeed.cpp中实现方法
    void run();
    // 数值传递方法
    void setDriverValue(int value)
    {
        // 接受从on_speedSlider_valueChanged中传过来的value，并将其赋值给currentDriverValue
        currentDriverValue = value;
    }

    // 创建速度发布节点
    std::shared_ptr<rclcpp::Node> speed_talker_node_cpp;
    // 定义速度发布方
    rclcpp::Publisher<std_msgs::msg::Int32>::SharedPtr speed_pub_;

private:
    // 储存数值变量
    int currentDriverValue;
    float speedValuePercent;
};

#endif // MAINWINDOW_H
